package com.songlanyun.modules.saleconfig.model.values;

import com.songlanyun.common.drive.ValueObject;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;

/**
 * 支付延时配置
 */
@Data
public class PaymentDelayConfig implements ValueObject {
    /**
     * 支付延时配置（天数最大89）
     */
    @Min(value = 0,message = "天数只允许输入大于等于0的整数")
    @Max(value = 7,message = "天数请输入不大于 7 的数值")
    private Integer delayDays;
    /**
     * 支付延时配置（小时数，最大23小时）
     */
    @Min(value = 0,message = "小时数只允许输入大于等于0的整数")
    @Max(value = 23,message = "小时数请输入不大于 23 的数值")
    private Integer delayHours;
    /**
     * 支付延时配置（分钟数，最大59分钟）
     */
    @Min(value = 10,message = "分钟请输入不小于 10 的数值")
    @Max(value = 59,message = "分钟请输入不大于 59 的数值")
    private Integer delayMinutes;


    /**
     * 获得支付要延迟多少秒
     * @return
     */
    public long getSecond()
    {
        final long daySecond = 86400; //60 * 60 * 24
        final long hourSecond = 3600; //60 * 60
        final long minuteSecond = 60; //60 * 60
        return  this.getDelayDays() * daySecond + this.getDelayHours() * hourSecond + this.getDelayMinutes() * minuteSecond;
    }

    /**
     * 获得支付要延迟多少毫秒
     * @param timestamp
     * @return
     */
    public long getExpiredTimestamp(long timestamp)
    {
        return timestamp + getSecond()*1000;
    }
}
